Skip to content
This repository was archived by the owner on Jul 26, 2026. It is now read-only.

release: v0.1.151 - secure cron config and backup fixes - #107

Merged
mhbdev merged 1 commit into
masterfrom
feat/release-0.1.151
Jul 26, 2026
Merged

release: v0.1.151 - secure cron config and backup fixes#107
mhbdev merged 1 commit into
masterfrom
feat/release-0.1.151

Conversation

@mhbdev

@mhbdev mhbdev commented Jul 25, 2026

Copy link
Copy Markdown
Owner

What changed

  • Adds secure HTTP cron configuration using httpMethod and encrypted resource environment references instead of storing bearer tokens in upstand.json.
  • Adds the database migration and generated schema metadata for the new schedule fields.
  • Propagates configured custom CA certificates through S3 backup, restore, verification, retention, and schedule deletion flows.
  • Prevents deletion of certificates still assigned to S3 backup destinations.
  • Standardizes the local development encryption-key examples and updates release metadata to 0.1.151.

Why

The prior backup runtime enriched destinations with a CA certificate but did not pass that value into rclone construction, so private S3-compatible endpoints ignored their configured trust chain. Certificate deletion could also clear an active S3 reference through the foreign key behavior. Cron configuration previously accepted secret values in repository configuration, so it now stores only the encrypted environment variable name.

Validation

  • bun run check-types
  • bun run test — 10 successful Turbo tasks; 16 local E2E tests skipped as expected
  • bun run db:check
  • Biome check on all changed source/config files

@mhbdev
mhbdev changed the base branch from canary to master July 25, 2026 23:58
@mhbdev
mhbdev marked this pull request as ready for review July 25, 2026 23:58
@mhbdev
mhbdev merged commit 2e82edc into master Jul 26, 2026
14 checks passed
@mhbdev
mhbdev deleted the feat/release-0.1.151 branch July 26, 2026 00:00

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9c5dd1f821

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +187 to +190
cronSecret = schedule.secretEnvVar
? envs[schedule.secretEnvVar] || ""
: envs.CRON_SECRET || "";
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Read cron secrets from the hydrated resource

When an HTTP cron specifies secretEnvVar, it always fails with the new “missing or empty” error in production: DrizzleUnitOfWork does not expose a resourceSecretRepository, so the optional lookup inside this transaction always returns undefined, regardless of whether the variable is configured. The resource loaded above is already hydrated with encrypted envVars; parse that field directly or add a real repository to the unit of work before relying on this value.

Useful? React with 👍 / 👎.

Comment on lines 1068 to 1072
const upstandJsonPath = path.join(clonePath, "upstand.json");
const vercelJsonPath = path.join(clonePath, "vercel.json");
let configContent: string | null = null;
if (fs.existsSync(upstandJsonPath)) {
configContent = fs.readFileSync(upstandJsonPath, "utf-8");
} else if (fs.existsSync(vercelJsonPath)) {
configContent = fs.readFileSync(vercelJsonPath, "utf-8");
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve vercel.json cron discovery

For repositories that declare cron jobs only in vercel.json, this callback now ignores the file entirely, so initial deployments create no schedules and later changes are never synchronized. The parent implementation explicitly fell back to reading vercel.json; retain that discovery path—extracting its crons field if necessary to satisfy the newly strict Upstand schema—rather than silently removing the existing flow.

Useful? React with 👍 / 👎.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant